package main

import "fmt"

type Student struct {
	id    int
	name  string
	class string
}

// newStudent 是 student类型的构造函数

func newStudent(id int, name string, class string) *Student {
	return &Student{
		id:    id,
		name:  name,
		class: class,
	}
}

// 学员管理的类型

type studentMgr struct {
	allStudents []*Student
}

// newStudentMgr() 是 studentStr的 构造函数
func newStudentMgr() *studentMgr {
	return &studentMgr{
		allStudents: make([]*Student, 0, 100),
	}
}

// 1、添加学员
func (s *studentMgr) addStudent(newStu *Student) {
	s.allStudents = append(s.allStudents, newStu)
}

// 2、编辑学员
func (s *studentMgr) modifyStudent(newStu *Student) {
	for i, v := range s.allStudents {
		if newStu.id == v.id { // 当学号相同时，就表示找到了要修改的学生
			s.allStudents[i] = newStu // 根据切片索引直接找到把新学生赋值进来
			return
		}
	}
	// 如果走到这里说明输入的学生没有找到
	fmt.Printf("输入的学生信息有误，系统中没有学号是：%d这个学生", newStu.id)
}

// 3、展示所有学员
func (s *studentMgr) showStudent() {
	for _, v := range s.allStudents {
		fmt.Printf("学号：%d 姓名：%s 班级：%s", v.id, v.name, v.class)
	}
}
